package com.springbootvue.blog_upload_image.utils;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

/**
 * @author Thomas
 * @version 1.0
 * @date 2021/12/8 19:48
 *
 * 上传图片的工具类
 */
public class UploadUtils {
    //上传图片的目标路径(图片上传到什么位置 这里是Linux的路径)
    private static final String BASE_PATH="/My_blog_image/";

    //定义访问路径
    private static final String SERVER_PATH="http://120.26.196.115:8080/images/";

    public static String upload(MultipartFile file) throws IOException {
        //第一步：获得文件的名称 (获得上传图片的名称!!!)
        //由于出现中文会导致我的Linux服务器乱码，所以不要原始名字!!!
        /**
         * 但是这样会但是图片后的.jpg .png .gif没有 所以这里必须取到原名称
         * 通过原名称取得后缀
         */
        String originalFilename = file.getOriginalFilename();
        String[] split = originalFilename.split("\\.");
        //System.out.println("originalFilename="+originalFilename);
        //为了保证图片在服务前端的名称的唯一性  使用UUIN对filename进行改写
        //UUID生成的为afjd-dcsc-hdjo-ghef 这是去掉"-"
        String uuid= UUID.randomUUID().toString().replace("-","");
        //将生成的uuid与originalFilename进行拼接 作为图片服务器端的名称!!!!
        //这里改为时间与uuid以及后缀名拼接
        String newFilename=GetDate(new Date())+"_"+uuid+"."+split[split.length-1];
        System.out.println("newFilename="+newFilename);
        //创建文件实例
        File image = new File(BASE_PATH, newFilename);
        //对这个文件进行上传操作
        file.transferTo(image);

        //返回浏览器端的访问名称
        return SERVER_PATH+newFilename;
    }

    //获得当前的时间  2021.12.23 12:23:59
    private static String GetDate(Date date){
        SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");//设置日期格式
        return df.format(date);
    }

}
